package com.qf.service;

import com.qf.dao.UserDao;
import com.qf.dao.UserDaoImpl;
import com.qf.pojo.User;
import com.qf.utils.Constants;
import com.qf.utils.MD5Utils;
import com.qf.utils.RandomUtils;

/**
 * @author hanjiejie
 * @version V1.0
 * @Project java2203
 * @Package com.qf.service
 * @Description:
 * @Date 2022/5/23 21:27
 */
public class UserServiceImpl implements UserService{
    /**
     * 查看用户名是否可用
     * @param username
     * @return
     */
    @Override
    public Boolean check(String username) {
   //调用Dao层查询结果
        //1.根据用户名调用dao层查询
        UserDao userDao =new UserDaoImpl();
        User user = userDao.findByUserName(username);
        if (user ==null){
            //如果为空代表可以用
            return true;
        }
        return false;
    }

    /**\
     * 用户登录
     * @param username
     * @param password
     * @return
     */
    @Override
    public User login(String username, String password) {
        //1.根据用户名调用dao层查询
        UserDao userDao =new UserDaoImpl();
        User user = userDao.findByUserName(username);
        if (user == null){
            //如果为空代表可以用
            return null;
        }
        //判断用户是否激活如果没有激活不让登录
       if (!Constants.USER_ACTIVE.equals(user.getStatus())){
           return null;
       }
       //判断是否是消费者不是消费者不让登录

        if (Constants.ROLE_ADMIN != user.getRole()) {
            return null;
        }
        //判断用户密码是否正确，使用md5将用户输入的密码加密将加密后的密文和数据库里面的比较是否正确
        String md5 = MD5Utils.md5(password);
        if (md5.equals(user.getPassword())){
        return user;

        }
        return null;
    }

    @Override
    public int createUser(User user) {
        //1.密码使用MD5加密
        String md5 = MD5Utils.md5(user.getPassword());
         user.setPassword(md5);
         //设置消费者状态  默认为激活状态
        user.setStatus(Constants.HAS_USER);
        //初始化用户角色为消费者
        user.setRole(Constants.ROLE_ADMIN);
       //初始化消费者随机激活码
        user.setCode(RandomUtils.createActive());
        //调用业务层完成用户注册
        UserDao userDao =new UserDaoImpl();
        int count = userDao.addUser(user);
        return count;
    }
}
